home *** CD-ROM | disk | FTP | other *** search
- /*
- * desktopi.c
- *
- * Purpose:
- * --------
- * Installation du nouveau bureau
- * Init des icnes
- *
- * History:
- * --------
- * 1992: fplanque: Created
- * 09.05.94: fplanque: les fichiers .h pour ressources avaient disparu
- * lors de l'ajout de commentaires - remis en place.
- * 15.07.94: sorti fonction create_EmptyDataDir();
- */
-
-
- #include "!OPTIONS.H" /* Options de compilation */
- #define THIS_FILE "DESKTOPI.C v1.00 - 02.95"
-
-
- /*
- * System headers:
- */
- #include <stdio.h> /* header standard */
- #include <string.h> /* strcopy */
- #include <aes.h> /* Pour routines AES */
-
- /*
- * Custom headers:
- */
- #include "SPEC_PU.H"
- #include "S_MALLOC.H"
- #include "DEBUG_PU.H"
- #include "WIN_PU.H"
- #include "DESK_PU.H"
- #include "COLORDEF.H" /* Couleurs
utiliser */
- #include "AESDEF.H" /* Gestion AES etendue */
- #include "VDI_PU.H"
-
- #include "DESKICON.RCH" /* Bureau + Icones haute rsolution */
- #if ACCEPT_SMALLFONTS == YES1
- #include "DESK_MED.RCH" /* Icnes moyenne rsolution */
- #endif
-
- #include "RSH_MAP.H"
- #include "RSHCRMAP.H" /* Cration du map pour CE RSH */
-
-
- /*
- * ------------------------ PROTOTYPES -------------------------
- */
-
- /*
- * EXTernal prototypes:
- */
- /*
- * Gnral:
- */
- extern void erreur( const char *texte_erreur );
- extern void erreur_rsrc( void ); /* PROVISOIRE */
- extern void ping( void );
- /*
- * Relocation du RSH:
- */
- extern void remap_rsh( RSH_MAP *rsh_map );
- /*
- * Fenetres:
- */
- extern void redraw( WIPARAMS *wi_params_adr, int area_x, int area_y, int area_w, int area_h, int take_control );
- /*
- * datadirs
- */
- extern DATADIR *create_EmptyDataDir( /* Out: Ptr sur directory cr */
- DATAGROUP * pDataGroup, /* In: Groupe dans lequel on cre ce dossier */
- DATADIR * pDataDir_parent );/* In: Directory parent de celui-ci */
- /*
- * datas:
- */
- extern void init_vars_datagroup(
- DATAGROUP *datagroup ); /* In: DATAGROUP à initialiser */
-
-
- /*
- * PUBlic INTernal prototypes:
- */
- static DATAGROUP * find_datagroup_byType( /* Out: Ptr sur datagroup */
- DATATYPE DataType ); /* In: Type DTYP_* */
-
- /*
- * PRIVate INTernal prototypes:
- */
- static void place_fnct_icon( OBJECT *icone );
- static void place_data_icon( OBJECT *icone );
- static void register_datagroup( int icon_no, DATAGROUP *datagroup_ptr );
-
-
- /*
- * ------------------------ VARIABLES -------------------------
- */
-
- /*
- * External variables:
- */
- extern unsigned G_version_aes; /* Version AES */
- extern int G_x_mini, G_y_mini; /* Coord sup gauche de l'cran */
- extern int G_w_maxi, G_h_maxi; /* Taille de l'cran de travail */
- extern int G_wx_mini, G_wy_mini; /* Dimensions maximales d'une */
- extern int G_ww_maxi, G_wh_maxi; /* fentre complte */
- extern int G_nb_colors; /* Nbre de couleurs simultanes */
-
-
- /*
- * Public variables:
- */
- OBJECT * G_desktop_adr; /* Ptr sur arbre bureau */
- WIPARAMS * G_desk_params_adr; /* Paramtres de la "fentre bureau" */
- ICONIMGS G_icon_images; /* Pointeurs sur les images des icnes */
- int G_icon_w, G_icon_h; /* Dimensions des icnes */
- int G_iconw_max_w; /* Dimension maximale d'une fentre contenant des icnes */
- int G_fantome_icone[18]; /* Tableau contenant les coord pour le dessin d'un fantme d'icne */
- DATAGROUP * G_datagroups; /* Pointeur sur tableau de G_datagroups */
-
- /*
- * Private variables:
- */
- static int M_fnct_icons_height=1; /* Hauteur de l'empilement des icnes de fonction */
- static int M_fnct_icons_max; /* Hauteur maxi: */
- static int M_fnct_icons_border; /* Ligne d'alignement */
- static int M_data_icons_width; /* Largeur de l'empilement des icnes de donnes */
- static int M_data_icons_max; /* Largeur maxi: */
- static int M_data_icons_border; /* Ligne d'alignement */
- static int M_icon_fcolor = ICON_PAPER_2 << 8; /* Couleur de fond pour les icones, par dfaut: blanc */
- static int M_nb_datagroups=0; /* Nombre de groupes de donnes enregistrs */
-
-
- /*
- * ------------------------ FUNCTIONS -------------------------
- */
-
- /*
- * init_desktop(-)
- *
- * Purpose:
- * --------
- * Ajuste l'arbre d'objets du bureau à la zone de travail de l'écran
- * courament utilisé
- *
- * History:
- * --------
- * 1993: fplanque: Created
- * 02.02.95: gre moyenne rsolution
- */
- void init_desktop( void )
- {
- int foo;
-
- TRACE0( "Initializing " THIS_FILE );
-
- /*
- * Si moyenne rsolution, utilise le jeu d'icne appropri:
- */
- #if ACCEPT_SMALLFONTS
- if( G_cell_size_prop == 1 )
- {
- rsh_map .rs_iconblk = rs_iconblk_med;
- }
- #endif
-
- /*
- * Relocation du RSH:
- */
- remap_rsh( &rsh_map ); /* Reloge le RSH */
-
- /*
- * Adresse des arbres:
- */
- G_desktop_adr = &rs_object[ rs_trindex[ DESKTOP ] ];
-
- /*
- * Modifie taille LOGO si ncessaire:
- */
- #if ACCEPT_SMALLFONTS
- if( G_cell_size_prop == 1 )
- { /*
- * Moyenne rsolution
- */
- int nb_lines = rs_bitblk[ 0 ] .bi_hl;
- int n_linesize = rs_bitblk[ 0 ] .bi_wb; /* Taille en bytes */
- int n_SrceLine = 2;
- char * pBitmap_Srce = &((char*) (rs_bitblk[ 0 ] .bi_pdata))[ 2 * n_linesize ];
- char * pBitmap_Dest = &((char*) (rs_bitblk[ 0 ] .bi_pdata))[ n_linesize ];
- int nb_CreatedLines = 1; /* La premire ligne reste intacte et existe dj
*/
-
- while( n_SrceLine <= nb_lines )
- {
- memcpy( pBitmap_Dest, pBitmap_Srce, n_linesize );
-
- /*
- * On a cr une ligne de plus:
- */
- nb_CreatedLines++;
-
- n_SrceLine++;
- n_SrceLine++;
- pBitmap_Srce += n_linesize;
- pBitmap_Srce += n_linesize;
- pBitmap_Dest += n_linesize;
-
- }
-
- /*
- * Nouvelle taille (/2):
- * Aussi bien pour l'ombre que pour le logo:
- */
- rs_bitblk[ 0 ] .bi_hl = nb_CreatedLines;
- rs_bitblk[ 1 ] .bi_hl = nb_CreatedLines;
- /*
- * Remonte l'ombre plus prs du logo:
- */
- G_desktop_adr[ LOGSHAPE ] .ob_y = 11;
- G_desktop_adr[ LOGSHADE ] .ob_y = 12;
- }
- #endif
-
- /*
- * Regarde taille des icnes Desktop:
- */
- G_icon_w = G_desktop_adr[ DSTDISK ] .ob_width;
- G_icon_h = G_desktop_adr[ DSTDISK ] .ob_height;
- /* TRACE2( "Icon w=%d h=%d", G_icon_w, G_icon_h ); */
-
- /*
- * Position X maximale que peuvent occuper les icnes ds une fentre
- */
- G_iconw_max_w= G_ww_maxi - G_ww_maxi % G_icon_w; /* Largeur max de la zone d'icnes */
- wind_calc( WC_BORDER, COMPLETE, 100, 100, G_iconw_max_w, 100,
- &foo, &foo, &G_iconw_max_w, &foo ); /* Larg max de la fentre */
-
-
- /*
- * Cration des infos sur la "fentre bureau"
- */
- G_desk_params_adr= (WIPARAMS *)MALLOC( sizeof(WIPARAMS) ) ;
- G_desk_params_adr -> handle = 0;
- G_desk_params_adr -> class = CLASS_DESK;
- G_desk_params_adr -> type = TYP_DESK;
- G_desk_params_adr -> draw_ptr .tree = G_desktop_adr;
- G_desk_params_adr -> seen_x = G_x_mini;
- G_desk_params_adr -> seen_y = G_y_mini;
- G_desk_params_adr -> seen_w = G_w_maxi;
- G_desk_params_adr -> seen_h = G_h_maxi;
- G_desk_params_adr -> total_w = G_w_maxi;
- G_desk_params_adr -> total_h = G_h_maxi;
- G_desk_params_adr -> selected_icon = 0; /* Pas d'icne slectionne */
-
- /*
- * Ordonnancement du bureau
- * Fixe dimensions du bureau:
- */
- G_desktop_adr[0] .ob_x = G_x_mini;
- G_desktop_adr[0] .ob_y = G_y_mini;
- G_desktop_adr[0] .ob_width = G_w_maxi;
- G_desktop_adr[0] .ob_height = G_h_maxi;
-
- /*
- * Place image centrale
- */
- G_desktop_adr[ LOGOBOX ] .ob_x =
- ( G_w_maxi - G_desktop_adr[ LOGOBOX ] .ob_width ) / 2;
- G_desktop_adr[ LOGOBOX ] .ob_y =
- ( G_h_maxi - G_icon_h - G_desktop_adr[ LOGOBOX ] .ob_height ) / 2;
-
- /*
- * Fixe les couleurs (logiques):
- */
- if( G_nb_colors >= 4 )
- { /*
- * A partir de 4 couleurs:
- * Fond du bureau:
- */
- G_desktop_adr[ ROOT ] .ob_spec.obspec.fillpattern = DESK_PATTERN_4;
- G_desktop_adr[ ROOT ] .ob_spec.obspec.interiorcol = DESK_COLOR_4;
- /*
- * Logo Stut One:
- */
- G_desktop_adr[ LOGSHAPE ] .ob_spec.bitblk -> bi_color = LOGO_COLOR_4; /* Rouge */
-
- if ( G_nb_colors >= 16 )
- { /*
- * A partir de 16 couleurs:
- */
- TE_COLOR te_color;
- te_color.value = 0;
- /*
- * No de version
- */
- te_color.bf .textcol = VERSION_COLOR_16;
- G_desktop_adr[ VERTEXT ] .ob_spec.tedinfo -> te_color = te_color.value; /* Bleu */
- /*
- * Couleur de fond des icones:
- */
- M_icon_fcolor = ICON_PAPER_16 << 8;
- }
- }
-
- /*
- * PLace corbeille: (et en dduit les pos max pour les autres icnes)
- */
- G_desktop_adr[ DSTTRASH ] .ob_x= G_w_maxi - G_icon_w;
- M_data_icons_max = G_w_maxi - G_icon_w; /* Les icnes de donnes ne pourront aller plus
droite que la corbeille! */
- M_data_icons_border = G_h_maxi - G_icon_h;
-
- G_desktop_adr[ DSTTRASH ] .ob_y= G_h_maxi - G_icon_h;
- M_fnct_icons_max = G_h_maxi - G_icon_h;
- /* Les icnes de fonction ne pourront aller plus bas
- que la corbeille! */
- M_fnct_icons_border = G_w_maxi - G_icon_w;
-
- /*
- * Couleur corbeille:
- */
- if ( G_nb_colors >= 16 )
- { /* A partir de 16 couleurs: */
- G_desktop_adr[ DSTTRASH ] .ob_spec.iconblk -> ib_char |= M_icon_fcolor ;
- }
-
- /*
- * Place icnes de fonction:
- */
- place_fnct_icon( &G_desktop_adr[ DSTDISK ] );
- place_fnct_icon( &G_desktop_adr[ DSTTERM ] );
-
- /*
- * Place icnes de donnes:
- */
- place_data_icon( &G_desktop_adr[ DSTARBO ] );
- place_data_icon( &G_desktop_adr[ DSTPAGES ] );
- place_data_icon( &G_desktop_adr[ DSTDATAS ] );
- place_data_icon( &G_desktop_adr[ DSTTEXTS ] );
- place_data_icon( &G_desktop_adr[ DSTPICS ] );
-
- /*
- * Installation du fond de bureau
- */
- wind_set( 0, WF_NEWDESK, G_desktop_adr, ROOT );
- /*
- * Affichage du nouveau bureau:
- */
- redraw( G_desk_params_adr, G_x_mini, G_y_mini, G_w_maxi, G_h_maxi, TAKE_CTRL );
-
- }
-
-
- /*
- * clear_desktop(-)
- *
- * Purpose:
- * --------
- * Enlve le bureau de l'application
- *
- * History:
- * --------
- * 1993: fplanque: Created
- */
- void clear_desktop( void )
- {
- /* App prend en charge souris */
- WIND_UPDATE_BEG_MCTRL
-
- form_dial( FMD_START, 0, 0, 0, 0, G_x_mini, G_y_mini, G_w_maxi, G_h_maxi );
- /* printf("\033Y F"); */
-
- /* Dsinstalle le bureau: */
- wind_set( 0, WF_NEWDESK, NULL, 0 );
-
- /* Raffiche bureau: */
- form_dial( FMD_FINISH, 0, 0, 0, 0, G_x_mini, G_y_mini, G_w_maxi, G_h_maxi );
- /* printf("\033Y -"); */
-
- /* Effet graphique de fermeture: */
- form_dial( FMD_SHRINK, 0, 0, 0, 0, G_x_mini, G_y_mini, G_w_maxi, G_h_maxi );
-
- /* AES peut reprendre la souris */
- WIND_UPDATE_END_MCTRL
- }
-
-
- /*
- * place_fnct_icon(-)
- *
- * Purpose:
- * --------
- * Placement des icnes de fonction sur le bureau:
- *
- * History:
- * --------
- * fplanque: Created
- */
- void place_fnct_icon( OBJECT *icone )
- {
- if ( M_fnct_icons_height + G_icon_h > M_fnct_icons_max )
- {
- M_fnct_icons_border -= G_icon_w;
- M_fnct_icons_height = 1;
- M_fnct_icons_max -= G_icon_h;
- }
- icone -> ob_x = M_fnct_icons_border;
- icone -> ob_y = M_fnct_icons_height;
- icone -> ob_spec.iconblk -> ib_char |= M_icon_fcolor; /* Couleur fond */
- M_fnct_icons_height += G_icon_h;
- }
-
-
- /*
- * place_data_icon(-)
- *
- * Purpose:
- * --------
- * Placement des icnes de données sur le bureau:
- *
- * History:
- * --------
- * fplanque: Created
- */
- void place_data_icon( OBJECT *icone )
- {
- if ( M_data_icons_width + G_icon_w > M_data_icons_max )
- {
- M_data_icons_border -= G_icon_h;
- M_data_icons_width = 0;
- M_data_icons_max -= G_icon_w;
- }
- icone -> ob_x = M_data_icons_width;
- icone -> ob_y = M_data_icons_border;
- icone -> ob_spec.iconblk -> ib_char |= M_icon_fcolor; /* Couleur fond */
- M_data_icons_width += G_icon_w;
- }
-
-
- /*
- * init_icons(-)
- *
- * Purpose:
- * --------
- * Initialisation des icnes:
- *
- * History:
- * --------
- * 1993: fplanque: Created
- */
- void init_icons( void )
- {
- ICONBLK * exemple = G_desktop_adr[ DSTTRASH ] .ob_spec.iconblk;
- DATAGROUP * datagroup_ptr; /* Pointeur sur datagr en cours de registrement */
-
- /* Dessin d'un fantme d'icne: */
- /* 0----2
- | |
- | |
- | |
- 12--14 4---6
- | |
- 10-----------8 */
-
- G_fantome_icone[ 0 ]= exemple -> ib_xicon & 0xFFFE;
- G_fantome_icone[ 1 ]= exemple -> ib_yicon & 0xFFFE;
-
- G_fantome_icone[ 2 ]= exemple -> ib_xicon + exemple -> ib_wicon & 0xFFFE;
- G_fantome_icone[ 3 ]= G_fantome_icone[ 1 ];
-
- G_fantome_icone[ 4 ]= G_fantome_icone[ 2 ];
- G_fantome_icone[ 5 ]= exemple -> ib_ytext & 0xFFFE;
-
- G_fantome_icone[ 6 ]= exemple -> ib_xtext + exemple -> ib_wtext & 0xFFFE;
- G_fantome_icone[ 7 ]= G_fantome_icone[ 5 ];
-
- G_fantome_icone[ 8 ]= G_fantome_icone[ 6 ];
- G_fantome_icone[ 9 ]= exemple -> ib_ytext + exemple -> ib_htext & 0xFFFE;
-
- G_fantome_icone[ 10 ]= exemple -> ib_xtext & 0xFFFE;
- G_fantome_icone[ 11 ]= G_fantome_icone[ 9 ];
-
- G_fantome_icone[ 12 ]= G_fantome_icone[ 10 ];
- G_fantome_icone[ 13 ]= exemple -> ib_ytext & 0xFFFE;
-
- G_fantome_icone[ 14 ]= G_fantome_icone[ 0 ];
- G_fantome_icone[ 15 ]= G_fantome_icone[ 13 ];
-
- G_fantome_icone[ 16 ]= G_fantome_icone[ 14 ];
- G_fantome_icone[ 17 ]= G_fantome_icone[ 1 ];
-
- /* for( i=0; i<=5 */
-
- /*
- * Minitel:
- */
- Icon_CopyIBLKtoICONIMG( G_desktop_adr[ DSTTERM ] .ob_spec.iconblk, &(G_icon_images .minitel) );
- /*
- * Donnes:
- */
- Icon_CopyIBLKtoICONIMG( G_desktop_adr[ DSTDATAS ] .ob_spec.iconblk, &(G_icon_images .datas) );
- /*
- * Textes:
- */
- Icon_CopyIBLKtoICONIMG( G_desktop_adr[ DSTTEXTS ] .ob_spec.iconblk, &(G_icon_images .texte) );
- /*
- * Images:
- */
- Icon_CopyIBLKtoICONIMG( G_desktop_adr[ DSTPICS ] .ob_spec.iconblk, &(G_icon_images .image) );
- /*
- * Icnes supplmentaires:
- */
- #if ACCEPT_SMALLFONTS
- if( G_cell_size_prop == 1 )
- { /*
- * Moyenne:
- */
- Icon_CopyIBLKtoICONIMG( &rs_iconblk_med[8], &(G_icon_images .affichages) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk_med[9], &(G_icon_images .saisies) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk_med[10], &(G_icon_images .params) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk_med[11], &(G_icon_images .liens) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk_med[12], &(G_icon_images .erreurs) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk_med[13], &(G_icon_images .motsclef) );
- }
- else
- { /*
- * Haute:
- */
- Icon_CopyIBLKtoICONIMG( &rs_iconblk[8], &(G_icon_images .affichages) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk[9], &(G_icon_images .saisies) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk[10], &(G_icon_images .params) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk[11], &(G_icon_images .liens) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk[12], &(G_icon_images .erreurs) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk[13], &(G_icon_images .motsclef) );
- }
- #else
- /*
- * On considre qu'opn est en haute:
- */
- Icon_CopyIBLKtoICONIMG( &rs_iconblk[8], &(G_icon_images .affichages) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk[9], &(G_icon_images .saisies) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk[10], &(G_icon_images .params) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk[11], &(G_icon_images .liens) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk[12], &(G_icon_images .erreurs) );
- Icon_CopyIBLKtoICONIMG( &rs_iconblk[13], &(G_icon_images .motsclef) );
- #endif
-
- /******************************************/
- /* Initialisation des groupes de donnes: */
- /******************************************/
- /*
- * Alloue zone mmoire pour les infos:
- */
- G_datagroups = MALLOC( sizeof( DATAGROUP ) * NB_DATAGROUPS );
- datagroup_ptr = G_datagroups; /* Ptr sur 1er datagroup */
- register_datagroup( DSTARBO, datagroup_ptr++ );
- register_datagroup( DSTPAGES, datagroup_ptr++ );
- register_datagroup( DSTDATAS, datagroup_ptr++ );
- register_datagroup( DSTTEXTS, datagroup_ptr++ );
- register_datagroup( DSTPICS, datagroup_ptr++ );
- /* printf("Nbre de G_datagroups enregistrs: %d\n",M_nb_datagroups); */
- }
-
-
- /*
- * 02.02.95:
- */
- void Icon_CopyIBLKtoICONIMG(
- ICONBLK * pIconBlk,
- ICONIMG * pIconImg )
- {
- pIconImg -> mask = pIconBlk -> ib_pmask;
- pIconImg -> data = pIconBlk -> ib_pdata;
- pIconImg -> icon_y = pIconBlk -> ib_yicon;
- pIconImg -> icon_h = pIconBlk -> ib_hicon;
- pIconImg -> char_x = pIconBlk -> ib_xchar;
- pIconImg -> char_y = pIconBlk -> ib_ychar;
- }
-
- /*
- * 02.02.95:
- */
- void Icon_CopyICONIMGtoIBLK(
- ICONIMG * pIconImg,
- ICONBLK * pIconBlk )
- {
- pIconBlk -> ib_pmask = pIconImg -> mask;
- pIconBlk -> ib_pdata = pIconImg -> data;
- pIconBlk -> ib_yicon = pIconImg -> icon_y;
- pIconBlk -> ib_hicon = pIconImg -> icon_h;
- pIconBlk -> ib_xchar = pIconImg -> char_x;
- pIconBlk -> ib_ychar = pIconImg -> char_y;
- }
-
-
- /*
- * register_datagroup(-)
- *
- * Purpose:
- * --------
- * Enregistre un groupe de donnes dans la liste
- *
- * History:
- * --------
- * 1993: fplanque: Created
- */
- void register_datagroup( int icon_no, DATAGROUP *datagroup_ptr )
- {
- /*
- * state de l'icne:
- */
- unsigned int *icon_state = &(G_desktop_adr[ icon_no ] .ob_state);
- /*
- * state tendus:
- */
- DATATYPE ext_state = (*icon_state) >> 9;
- /*
- * Nom de l'unit de stockage virtuelle:
- */
- char *data_device;
- /* printf("state tendus=%u\n",ext_state); */
-
- /*
- * Fixe certains Paramtres Datagroup (Pas tous!):
- */
- datagroup_ptr -> icon_no = icon_no; /* No datagr [0...] */
- datagroup_ptr -> DataType = ext_state; /* Type de donnes */
-
- init_vars_datagroup( datagroup_ptr );
-
- /*
- * Fixe le nom de l'unit de stockage virtuelle:
- */
- switch( ext_state )
- {
- case DTYP_ARBO:
- datagroup_ptr -> root_dir = NULL; /* Pas encore de dossier reli */
- data_device = "ARB:";
- break;
-
- case DTYP_PAGES:
- datagroup_ptr -> root_dir = create_EmptyDataDir( datagroup_ptr, NULL ); /* Cre dossier vide */
- data_device = "ECR:";
- break;
-
- case DTYP_DATAS:
- datagroup_ptr -> root_dir = create_EmptyDataDir( datagroup_ptr, NULL ); /* Cre dossier vide */
- data_device = "DAT:";
- break;
-
- case DTYP_TEXTS:
- datagroup_ptr -> root_dir = create_EmptyDataDir( datagroup_ptr, NULL ); /* Cre dossier vide */
- data_device = "TXT:";
- break;
-
- case DTYP_PICS:
- datagroup_ptr -> root_dir = create_EmptyDataDir( datagroup_ptr, NULL ); /* Cre dossier vide */
- data_device = "IMG:";
- break;
-
- default:
- datagroup_ptr -> root_dir = create_EmptyDataDir( datagroup_ptr, NULL ); /* Cre dossier vide */
- data_device = "xxx:";
-
- }
- strcpy( datagroup_ptr -> data_device, data_device );
-
- /* Nouveaux state tendus = No du datagroup concern [1...]: */
- /* Une icne sans datagroup aura donc pour ext_state: 0 */
- ext_state = (++M_nb_datagroups) << 9;
- /* Fixe nouveaux state: */
- (*icon_state) &= 0x01FF; /* Efface ancien ext_state */
- (*icon_state) |= ext_state; /* Fixe nouveaux.. */
- }
-
-
-
- /*
- * dgroup_adr_byiconno(-)
- *
- * Purpose:
- * --------
- * Fournit l'adresse d'un groupe de donnes
- * en fonction du no de l'icne
- *
- * History:
- * --------
- * 1993: fplanque: Created
- */
- DATAGROUP *dgroup_adr_byiconno( int icon_no )
- {
- int data_no = ( (G_desktop_adr[ icon_no ] .ob_state) >>9) -1; /* Ext flags de l'icne */
-
- return &G_datagroups[ data_no ];
- }
-
-
-
- /*
- * find_datagroup_byType(-)
- *
- * Purpose:
- * --------
- * Fournit l'adresse d'un groupe de donnes
- * en fonction du type de donnes qu'il contient
- *
- * Algorythm:
- * ----------
- * Vrifie tous les DATAGROUPS pour voir si le type existe
- *
- * History:
- * --------
- * 06.07.94: fplanque: Created
- * 11.07.94: Recherche plus fiable du DATAGROUP concern
- */
- DATAGROUP * find_datagroup_byType( /* Out: Ptr sur datagroup */
- DATATYPE DataType ) /* In: Type DTYP_* */
- {
- int i;
-
- for( i=0; i<NB_DATAGROUPS; i++ )
- {
- if( G_datagroups[ i ] .DataType == DataType )
- {
- return & G_datagroups[ i ];
- }
- }
-
- return NULL;
- }
-